The desire to make use of existing or new software routines for new applications is not new. Nearly every programming language, including C++, VISUAL-BASIC™, AGILENT-VEE™, and LABVIEW™ provide capabilities to invoke such routines. The routines themselves may be cast in a dynamically linked library form, an ACTIVE-X™ component form, a CORBA™ component form, or a variety of others. The languages can be used to customize or fit the routines to be reused as needed. The customization cannot be extended across reuse instances of the customized routines. Furthermore, these solutions all require a considerable amount of programming skill to use effectively, and frequently require that a “wrapper” routine be written in the programming language in order to cast the original routine in a new role as a new routine ready to reuse.
Computer programs used to verify the integrity of electrical circuits, such as, for example, TEST-EXECUTIVE™ from DIT-MCO International Corporation, TEST-STAND™ from National Instruments Corporation, and TEST-EXEC™ from Hewlett-Packard Company, are computer programs designed to enable users to reuse test and measurement software routines to create test programs and manage the testing operation. Computer programs used to verify the integrity of electrical circuits frequently provide language-like features that enable customization of the operation of those routines. However, like general purpose programming languages, they do not provide ways to systematically customize the operation of those routines across a number of reuse instances. To do this requires the same style of “wrapper” routines mentioned above, which are usually performed using a general-purpose language, such as those mentioned above, for example. This type of customization typically must be performed outside of the computer program development environment, and hence can be cumbersome.
As is generally known in computer programming, sometimes processing must be performed whenever the value of a variable changes. In most applications, this is accomplished by periodically checking for a new value in that variable and performing whatever processing is required when a new value is detected. This technique can be quite inefficient, especially in cases where the value changes infrequently and processing must be done quickly after a change is detected. In such cases, the value must be checked quite frequently and most checks correspond to wasted processing. Being able to trigger the processing at the point of change in the value of that variable would be more efficient, but doing so is not easily accomplished using existing solutions.
Accordingly, a need exists for an active data type that functions as a variable and that enables software routines to be easily customized. Furthermore, a need also exists for such an active data type that causes processing of the variable to be triggered in an efficient manner.